delete from contactos_categorias;
delete from contactos_direcciones;
delete from contactos_datos_banco;
delete from clientes_dtos_proveedores;
delete from agentes_comisiones;
delete from clientes_datos;
delete from proveedores_datos;
delete from personal_datos;

delete from pedidos_cliente_detalles;
delete from albaranes_cliente_detalles;
delete from facturas_cliente_detalles;
delete from pagos_cliente;
delete from facturas_cliente;
delete from albaranes_cliente;
delete from pedidos_cliente;

delete from pedidos_proveedor_detalles;
delete from albaranes_proveedor_detalles;
delete from facturas_proveedor_detalles;
delete from pagos_proveedor;
delete from facturas_proveedor;
delete from albaranes_proveedor;
delete from pedidos_proveedor;

delete from comisiones_liquidadas;
delete from contactos;


Extract MetaData con cmapos blob, lanzar script en nueva base de datos

CREATE TABLE PROVEEDORES (
    CODIGO           VARCHAR(10) NOT NULL,
    NIFCIF           VARCHAR(10) CHARACTER SET ISO8859_1,
    NOMBRE           VARCHAR(100) CHARACTER SET ISO8859_1,
    CALLE            VARCHAR(150) CHARACTER SET ISO8859_1,
    NUMERO           VARCHAR(20) CHARACTER SET ISO8859_1,
    PISO             VARCHAR(20) CHARACTER SET ISO8859_1,
    CODIGOPOSTAL     VARCHAR(5) CHARACTER SET ISO8859_1,
    POBLACION        VARCHAR(40) CHARACTER SET ISO8859_1,
    PROVINCIA        VARCHAR(30) CHARACTER SET ISO8859_1,
    TELEFONO1        VARCHAR(30) CHARACTER SET ISO8859_1,
    TELEFONO2        VARCHAR(30) CHARACTER SET ISO8859_1,
    FAX              VARCHAR(30) CHARACTER SET ISO8859_1,
    CORREO           VARCHAR(60) CHARACTER SET ISO8859_1,
    PERSONACONTACTO  VARCHAR(100) CHARACTER SET ISO8859_1,
    OBSERVACIONES    BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET ISO8859_1,
    CODIGOCLIENTE    VARCHAR(10),
    ETIQUETADO       SMALLINT,
    ULTIMOCAMBIO     TIMESTAMP
);

ALTER TABLE PROVEEDORES ADD CONSTRAINT PK_PROVEEDORES PRIMARY KEY (CODIGO);

CREATE TABLE SUCURSALESPROVEEDOR (
    CODIGOPROVEEDOR    VARCHAR(10) NOT NULL,
    CODIGO           SMALLINT NOT NULL,
    CALLE            VARCHAR(150),
    NUMERO           VARCHAR(20),
    PISO             VARCHAR(20),
    CODIGOPOSTAL     VARCHAR(5),
    POBLACION        VARCHAR(40),
    PROVINCIA        VARCHAR(30),
    TELEFONO1        VARCHAR(30),
    TELEFONO2        VARCHAR(30),
    FAX              VARCHAR(30),
    CORREO           VARCHAR(60),
    PERSONACONTACTO  VARCHAR(100)
);
ALTER TABLE SUCURSALESPROVEEDOR ADD CONSTRAINT PK_SUCURSALESPROVEEDOR PRIMARY KEY (CODIGOPROVEEDOR, CODIGO);
ALTER TABLE SUCURSALESPROVEEDOR ADD FOREIGN KEY (CODIGOPROVEEDOR) REFERENCES PROVEEDORES (CODIGO) ON DELETE CASCADE ON UPDATE NO ACTION;


COMMIT WORK;

/*DATOS*/


Poner generador de ID_CONTACTOS a 1 

DECLARE EXTERNAL FUNCTION substr 
    CSTRING(255), SMALLINT, SMALLINT
    RETURNS CSTRING(255) FREE_IT
    ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';


insert into CONTACTOS
(ID, REFERENCIA, NIF_CIF, NOMBRE, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2,
FAX, EMAIL_1, PERSONA_CONTACTO, NOTAS)

select
GEN_ID(GEN_CONTACTOS_ID, 1),
proveedores.CODIGO AS REFERENCIA,
proveedores.NIFCIF AS NIF_CIF,
proveedores.NOMBRE AS NOMBRE,
(COALESCE(proveedores.CALLE,'') || ', ' || COALESCE(proveedores.NUMERO,'') || ' ' || COALESCE(proveedores.PISO,'')) AS CALLE,
proveedores.POBLACION AS POBLACION,
proveedores.PROVINCIA AS PROVINCIA,
proveedores.CODIGOPOSTAL AS CODIGO_POSTAL,
substr(proveedores.TELEFONO1,1,25) AS TELEFONO_1,
substr(proveedores.TELEFONO2,1,25) AS TELEFONO_2,
substr(proveedores.FAX,1,25) AS FAX,
proveedores.CORREO AS EMAIL_1,
proveedores.PERSONACONTACTO AS PERSONA_CONTACTO,
proveedores.OBSERVACIONES AS NOTAS

from proveedores;

insert into contactos_categorias
(ID_CONTACTO, ID_CATEGORIA)
select ID, 2
from contactos;

insert into proveedores_datos
(ID_PROVEEDOR, ID_TIPO_IVA)
select CONTACTOS.ID, 1
from CONTACTOS
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 2;

delete from proveedores_datos
where proveedores_datos.id_proveedor in (
select CONTACTOS.ID
from CONTACTOS
left join proveedores on proveedores.codigo = contactos.referencia
WHERE proveedores.CODIGOCLIENTE is not null);

insert into proveedores_datos
(ID_PROVEEDOR, ID_TIPO_IVA, CODIGO_ASIGNADO)
select CONTACTOS.ID, 2, proveedores.CODIGOCLIENTE
from CONTACTOS
left join proveedores on proveedores.codigo = contactos.referencia
WHERE proveedores.CODIGOCLIENTE is not null;    

INSERT INTO CONTACTOS_DIRECCIONES
(ID, ID_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO,
 TELEFONO, MOVIL, FAX, EMAIL)
/* Insertamos la sucursales de los proveedores */
select
GEN_ID(GEN_CONTACTOS_DIR_ID, 1),
contactos.id AS ID_CONTACTO,
(COALESCE(sucursalesproveedor.CALLE,'') || ', ' || COALESCE(sucursalesproveedor.NUMERO,'') || ' ' || COALESCE(sucursalesproveedor.PISO,'')) AS CALLE,
sucursalesproveedor.POBLACION AS POBLACION,
sucursalesproveedor.PROVINCIA AS PROVINCIA,
sucursalesproveedor.CODIGOPOSTAL AS CODIGO_POSTAL,
sucursalesproveedor.PERSONACONTACTO AS PERSONA_CONTACTO,
substr(sucursalesproveedor.TELEFONO1,1,25) AS TELEFONO,
substr(sucursalesproveedor.TELEFONO2,1,25) AS MOVIL,
substr(sucursalesproveedor.FAX,1,25) AS FAX,
sucursalesproveedor.CORREO AS EMAIL
from sucursalesproveedor
left join contactos on contactos.referencia = sucursalesproveedor.codigoproveedor
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 2
and (COALESCE(sucursalesproveedor.CALLE,'') || ', ' || COALESCE(sucursalesproveedor.NUMERO,'') || ' ' || COALESCE(sucursalesproveedor.PISO,'')) <> ',';


    
Extract MetaData con cmapos blob, lanzar script en nueva base de datos

CREATE TABLE CLIENTES (
    CODIGO           VARCHAR(10) NOT NULL,
    NIFCIF           VARCHAR(10) CHARACTER SET ISO8859_1,
    NOMBRE           VARCHAR(100) CHARACTER SET ISO8859_1,
    CALLE            VARCHAR(150) CHARACTER SET ISO8859_1,
    NUMERO           VARCHAR(20) CHARACTER SET ISO8859_1,
    PISO             VARCHAR(20) CHARACTER SET ISO8859_1,
    CODIGOPOSTAL     VARCHAR(5) CHARACTER SET ISO8859_1,
    POBLACION        VARCHAR(40) CHARACTER SET ISO8859_1,
    PROVINCIA        VARCHAR(30) CHARACTER SET ISO8859_1,
    TELEFONO1        VARCHAR(30) CHARACTER SET ISO8859_1,
    TELEFONO2        VARCHAR(30) CHARACTER SET ISO8859_1,
    FAX              VARCHAR(30) CHARACTER SET ISO8859_1,
    CORREO           VARCHAR(60) CHARACTER SET ISO8859_1,
    PERSONACONTACTO  VARCHAR(100) CHARACTER SET ISO8859_1,
    OBSERVACIONES    BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET ISO8859_1,
    BANCO            VARCHAR(100) CHARACTER SET ISO8859_1,
    IVA              FLOAT DEFAULT 0,
    DESCUENTO        FLOAT DEFAULT 0,
    TIPOCLIENTE      VARCHAR(50) CHARACTER SET ISO8859_1,
    ETIQUETADO       SMALLINT,
    ULTIMOCAMBIO     TIMESTAMP
);
ALTER TABLE CLIENTES ADD CONSTRAINT PK_CLIENTES PRIMARY KEY (CODIGO);    

CREATE TABLE SUCURSALESCLIENTE (
    CODIGOCLIENTE    VARCHAR(10) NOT NULL,
    CODIGO           SMALLINT NOT NULL,
    CALLE            VARCHAR(150),
    NUMERO           VARCHAR(20),
    PISO             VARCHAR(20),
    CODIGOPOSTAL     VARCHAR(5),
    POBLACION        VARCHAR(40),
    PROVINCIA        VARCHAR(30),
    TELEFONO1        VARCHAR(30),
    TELEFONO2        VARCHAR(30),
    FAX              VARCHAR(30),
    CORREO           VARCHAR(60),
    PERSONACONTACTO  VARCHAR(100)
);
ALTER TABLE SUCURSALESCLIENTE ADD CONSTRAINT PK_SUCURSALESCLIENTE PRIMARY KEY (CODIGOCLIENTE, CODIGO);
ALTER TABLE SUCURSALESCLIENTE ADD FOREIGN KEY (CODIGOCLIENTE) REFERENCES CLIENTES (CODIGO) ON DELETE CASCADE ON UPDATE NO ACTION;


insert into CONTACTOS
(ID, REFERENCIA, NIF_CIF, NOMBRE, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2,
FAX, EMAIL_1, PERSONA_CONTACTO, NOTAS)

select
GEN_ID(GEN_CONTACTOS_ID, 1),
clientes.CODIGO AS REFERENCIA,
clientes.NIFCIF AS NIF_CIF,
clientes.NOMBRE AS NOMBRE,
(COALESCE(clientes.CALLE,'') || ', ' || COALESCE(clientes.NUMERO,'') || ' ' || COALESCE(clientes.PISO,'')) AS CALLE,
clientes.POBLACION AS POBLACION,
clientes.PROVINCIA AS PROVINCIA,
clientes.CODIGOPOSTAL AS CODIGO_POSTAL,
substr(clientes.TELEFONO1,1,25) AS TELEFONO_1,
substr(clientes.TELEFONO2,1,25) AS TELEFONO_2,
substr(clientes.FAX,1,25) AS FAX,
clientes.CORREO AS EMAIL_1,
clientes.PERSONACONTACTO AS PERSONA_CONTACTO,
clientes.OBSERVACIONES AS NOTAS

from clientes;


insert into contactos_categorias
(ID_CONTACTO, ID_CATEGORIA)
select ID, 1
from contactos
where ID not in (select ID_CONTACTO from contactos_categorias);


MIRAR SI TODOS LOS CLIENTES TIENEN DESCUENTO NULL
select *
from clientes
where descuento is not null;


MIRAR SI TODOS LOS CLIENTES TIENEN IVA 16%
select DISTINCT IVA
from clientes;

//Establecemos el tipo de iva al 16 para todos los clientes
insert into clientes_datos
(ID_CLIENTE, ID_TIPO_IVA, REGIMEN_IVA)
select CONTACTOS.ID, 1, 'General'
from CONTACTOS
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 1;

SET GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID TO 1;


insert into contactos_datos_banco
(ID, ID_contacto, titular)
select GEN_ID(GEN_CONTACTOS_DATOS_BANCO_ID, 1), CONTACTOS.ID, clientes.banco
from CONTACTOS
left join clientes on clientes.codigo = contactos.referencia
WHERE clientes.banco is not null;


//Insertamos la distintas sucursales de cliente
INSERT INTO CONTACTOS_DIRECCIONES
(ID, ID_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO,
 TELEFONO, MOVIL, FAX, EMAIL)

select

GEN_ID(GEN_CONTACTOS_DIR_ID, 1),
contactos.id AS ID_CONTACTO,
(COALESCE(sucursalescliente.CALLE,'') || ', ' || COALESCE(sucursalescliente.NUMERO,'') || ' ' || COALESCE(sucursalescliente.PISO,'')) AS CALLE,
sucursalescliente.POBLACION AS POBLACION,
sucursalescliente.PROVINCIA AS PROVINCIA,
sucursalescliente.CODIGOPOSTAL AS CODIGO_POSTAL,
sucursalescliente.PERSONACONTACTO AS PERSONA_CONTACTO,
substr(sucursalescliente.TELEFONO1,1,25) AS TELEFONO,
substr(sucursalescliente.TELEFONO2,1,25) AS MOVIL,
substr(sucursalescliente.FAX,1,25) AS FAX,
sucursalescliente.CORREO AS EMAIL

from sucursalescliente
left join contactos on contactos.referencia = sucursalescliente.codigocliente
left join contactos_categorias on contactos_categorias.id_contacto = contactos.id
where contactos_categorias.id_categoria = 1
and (COALESCE(sucursalescliente.CALLE,'') || ', ' || COALESCE(sucursalescliente.NUMERO,'') || ' ' || COALESCE(sucursalescliente.PISO,'')) <> ',';


drop table sucursalesproveedor;
DROP TABLE PROVEEDORES;
drop table sucursalescliente;
DROP TABLE CLIENTES;


insert into empresas_contactos
(ID, ID_empresa, ID_contacto)
select GEN_ID(GEN_EMPRESAS_CONTACTOS_ID, 1), 1, id
from contactos;